package com.danbay.cloud.lock.device.api.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 设备-门锁权限动态上报数据传输对象
 * @author yangyanchen on 2017/12/15
 *         Copyright © 2016 －2017 旦倍科技
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AccessReportDto {

    @NotBlank(message = "设备ID不能为空")
    private String deviceId;

    /**
     * 0x01 管理员
     * 0x02 管家
     * 0x03 房客
     * 0x04 复位按键
     * 0x00 临时
     */
    @NotBlank(message = "权限上报密码类型不能为空")
    private Integer type;

    /**
     * 0x00 恢复默认值（若是管理员密码恢复默认值，则代表门锁恢复出厂设置）
     * 0x01 新增
     * 0x02 修改
     * 0x03 删除
     * 0x04 暂停
     * 0x05 解除暂停（即密码恢复使用）
     * 0x06 清空密码（清空用户密码使用）
     * 0x07 复位密码（复位管家密码时使用）
     */
    @NotBlank(message = "权限动态操作类型不能为空")
    private Integer action;

    @NotBlank(message = "权限动态上报密码别名不能为空")
    private String alias;

    @NotNull(message = "权限动态上报时间不能为空")
    private Date time;

    /**
     * 0-操作成功
     * 1-已存在重复密码
     * 2-该类型密码存储空间已满
     * 3-该密码不存在
     * 4-其他错误
     */
    @NotBlank(message = "权限动态上报操作码不能为空")
    private Integer opCode;

}
